// app.js
const loadingManager = require('./utils/loadingManager')

App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    
    // 获取用户信息
    this.getUserInfo()
    
    // 初始化全局加载状态
    this.initGlobalLoading()
  },
  
  getUserInfo() {
    // 在实际项目中，这里应该从服务器获取用户信息
    // 这里我们模拟一些用户信息
    const userInfo = {
      avatarUrl: '/assets/avatar/default.png',
      nickName: '张三',
      gender: 1,
      province: '广东省',
      city: '广州市',
      country: '中国',
      phoneNumber: '138****8888',
      realName: '张三'
    }
    
    this.globalData.userInfo = userInfo
  },
  
  // 初始化全局加载状态
  initGlobalLoading() {
    // 设置全局加载状态
    this.globalData.globalLoading = false
    this.globalData.globalSkeletonType = 'default'
    this.globalData.globalLoadingText = '加载中...'
  },
  
  // 显示全局加载
  showGlobalLoading(options = {}) {
    const {
      skeletonType = 'default',
      loadingText = '加载中...',
      customClass = ''
    } = options
    
    // 确保loadingText不为null或undefined
    const safeLoadingText = loadingText || '加载中...'
    
    this.globalData.globalLoading = true
    this.globalData.globalSkeletonType = skeletonType
    this.globalData.globalLoadingText = safeLoadingText
    
    // 通知所有页面更新全局加载状态
    this.notifyPages('updateGlobalLoading', {
      globalLoading: true,
      globalSkeletonType: skeletonType,
      globalLoadingText: safeLoadingText
    })
  },
  
  // 隐藏全局加载
  hideGlobalLoading() {
    this.globalData.globalLoading = false
    
    // 通知所有页面更新全局加载状态
    this.notifyPages('updateGlobalLoading', {
      globalLoading: false
    })
  },
  
  // 通知所有页面
  notifyPages(method, data) {
    const pages = getCurrentPages()
    pages.forEach(page => {
      if (page[method] && typeof page[method] === 'function') {
        page[method](data)
      }
    })
  },
  
  globalData: {
    userInfo: null,
    baseUrl: 'http://localhost:3000', // 后端服务器地址
    globalLoading: false,
    globalSkeletonType: 'default',
    globalLoadingText: '加载中...'
  }
})